package com.practice.screen;

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

/** */
/*******************************************************************
 * * This JavaBean is used to snapshot the GUI in a * Java application! You can
 * embeded * it in to your java application source code, and us * it to snapshot
 * the right GUI of the application * @see javax.ImageIO *
 * 
 * @author liluqun ([email]liluqun@263.net[/email]) * @version 1.0 *
 *****************************************************/
public class GUICamera {
	private String fileName; // Prefix of file name
	private String defaultName = "GuiCamera";
	static int serialNum = 0;
	private String imageFormat; // Format of image file.
	private String defaultImageFormat = "jpg";
	Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

	/** */
	/****************************************************************
	 * 
	 * construct will use the default Image file surname "GuiCamera", and
	 * default image format "png"
	 ****************************************************************/
	public GUICamera() {
		fileName = defaultName;
		imageFormat = defaultImageFormat;
	}

	/** */
	/****************************************************************
	 * @param s
	 *            the surname of the snapshot file
	 * @param format
	 *            the format of the image file, it can be "jpg" or "png" *
	 * 
	 ****************************************************************/
	public GUICamera(String s, String format) {
		fileName = s;
		imageFormat = format;
	}

	/** */
	/****************************************************************
	 * snapShot the Gui once
	 ****************************************************************/

	public void snapShot() {
		try { // Copy screen shot to a BufferedImage object.
			BufferedImage screenshot = (new Robot())
					.createScreenCapture(new Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight()));
			serialNum++; // Create file according to file prefix and format.
			String name = fileName + String.valueOf(serialNum) + "." + imageFormat;
			File f = new File(name);
			System.out.print("Save File " + name);
			// Write sreen shot object to image file.
			ImageIO.write(screenshot, imageFormat, f);
			System.out.print("..Finished! ");
		} catch (Exception ex) {
			System.out.println(ex);
		}
	}

	public static void main(String[] args) {
		System.out.print("Open connection");
		GUICamera cam = new GUICamera("C:/Temporary/ScreenShot", "jpg");//
		cam.snapShot();
	}
}